A networked storage system may include a number of network storage servers, which may be implemented in the form of storage appliances. A storage server may provide file services related to the organization of data on storage devices, such as disks. Such a storage server is commonly referred to as a file server or a filer. An example of such a storage server is any of the filer products made by Network Appliance, Inc. in Sunnyvale, Calif. The storage server may be implemented with a special-purpose computer or a general-purpose computer. The storage server is typically coupled to a number of storage devices, such as disks, to store or to retrieve data on the storage devices. The disks may be arranged into Redundant Array of Independent Disks (RAID) volumes.
A typical RAID volume includes a number of data disks and a parity disk. Each of the data disks and the parity disk is divided into a number of stripes. Data is stored in the stripes of the data disks, which are typically independent of each other. A parity bit is determined for each stripe across a number of disks. For example, each of a set of disks may have four stripes. A conventional RAID controller, which may be implemented in a storage server, may determine a parity bit of the first stripe of each disk by performing an exclusive-OR (XOR) operation on the data in the first stripe of each disk. The parity bit of each stripe is usually stored in the corresponding stripe of the parity disk.
However, the operations involved in determining the parity bit are usually memory intensive, and thus, consume substantial valuable processing resources in the RAID controller. In addition to parity determination, the RAID controller typically performs input/output (I/O) operations to the storage devices, determines where to store data on the storage devices and when to store the data on the storage devices.